﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Practice_with_files_and_strings
{
    class Program
    {
        static void Main(string[] args)
        {
            //Class1 firstTask = new Class1();
            //firstTask.FirstTask();
            //Console.ReadLine();
            //    Class2 secondTask = new Class2();
            //    secondTask.SecondTask();
            //    Console.ReadLine();
            Class3 thirdTask = new Class3();
            thirdTask.ThirdTask();
            Console.ReadLine();
        }
    }
    }

    class Class1
    { 
        public void FirstTask ()
        { 
    //ВВести строку, удалить пробелы и определить является ли она палиндромом
    Console.WriteLine("Введите строку");
            string str = Console.ReadLine();
    str = str.Replace(" ", "");
            Console.WriteLine(str);
            string reversedString = Reverse(str);
    Console.WriteLine("Перевернутая строка выглядит так: {0}", reversedString);
            if (str == reversedString)
            {
                Console.WriteLine("Введенная вами строка является палиндромом");
            }
            else
            {
                Console.WriteLine("Введенная вами строка не является палиндромом");
            }
            Console.ReadLine();
        }

        public static string Reverse(string s)
      {
    char[] charArray = s.ToCharArray();
    Array.Reverse(charArray);
    return new string(charArray);
      }
    }


    class Class2
    {
        public void SecondTask()
        {
            //Считать файл, определить самую длинную строку и вывести ее номер
            //            Ну алгоритм прост:
            //            -завести перменную под строку и переменную под её длину
            //-считать первую строку через getline() и принять её самой длинной, запомнить её длину
            //- в цикле считывать следующую строку и проверять не больше ли её длина той нашей самой длинной на текущий момент, если больше - запомнить эту как самую длинную и считывать дальше...
            //- вывести результаты

            string newStr = @"D:\New\DD.txt";
            string strLine;
            string text = File.ReadAllText(newStr);
            Console.WriteLine(text);
            Console.ReadLine();

            //Directory.CreateDirectory(newStr);
            //string[] files = Directory.GetFiles(@"D:\New", "*.txt", SearchOption.TopDirectoryOnly);
            int maxLength = 0;

            StringReader strReader = new StringReader(text);
            int numberOfString = 0;
            int strLength = 0;
            strLine = strReader.ReadLine();
            while (strLine != null)
            {
                strLine = strReader.ReadLine();
                if (strLine != null)
                {
                    strLength = strLine.Length;
                    if (strLength > maxLength)
                    {
                        maxLength = strLength;
                        numberOfString = strLine.IndexOf(strLine);
                    }
                }
            }
            Console.WriteLine("Самая длинная строка находится под номером {0} и ее длина {1}", numberOfString, maxLength);

        }
    }

    //Считать файл, пользователь вводит букву, вывести все слова. начинающиеся или заканчивающиеся на эту букву
    class Class3
    {
        public void ThirdTask()
        {
            string obtainedStr = @"D:\New\DD.txt";
            string text = File.ReadAllText(obtainedStr);
            Console.WriteLine(text);
            string[] textMass = text.Split(' ');
        Console.WriteLine("Введите букву");
        char entLetter = Char.Parse(Console.ReadLine());
        //int flag1=0;
        //int flag2=0;
        foreach (var word in textMass)
        {
        

            //flag1 = 0;
            //flag2 = 0;
            char[] wordArr = word.ToCharArray();
            {
                if (entLetter == wordArr[0])
                {
                    Console.WriteLine("Слово, начинающееся на введенную вами букву: {0}", word);
                    //flag1 = 0;
                }
                //else { flag1 = 1; }
                int s = word.Length;
                s--;
                if (entLetter == wordArr[s])
                {
                    Console.WriteLine("Слово, заканчивающееся на введенную вами букву: {0}", word);
                    //flag2 = 0;
                }
                //else { flag2 = 1; }
            }           
        }
        //if ((flag1 == 1) && (flag2 == 1))
        //{
        //    Console.WriteLine("Слов, заканчивающихся или начинающихся на введенную вами букву нет");
        //}
    }
}








